# synergy -- mouse and keyboard sharing utility
# Copyright (C) 2009 Chris Schoeneman, Nick Bolton, Sorin Sbarnea
# 
# This package is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# found in the file COPYING that should have accompanied this file.
# 
# This package is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

if (WIN32)

	set(inc
		CMSWindowsClipboard.h
		CMSWindowsClipboardAnyTextConverter.h
		CMSWindowsClipboardBitmapConverter.h
		CMSWindowsClipboardHTMLConverter.h
		CMSWindowsClipboardTextConverter.h
		CMSWindowsClipboardUTF16Converter.h
		CMSWindowsDesks.h
		CMSWindowsEventQueueBuffer.h
		CMSWindowsKeyState.h
		CMSWindowsScreen.h
		CMSWindowsScreenSaver.h
		CMSWindowsUtil.h
		CMSWindowsRelauncher.h
		CMSWindowsHookLibraryLoader.h
		IMSWindowsClipboardFacade.h
	)

	set(src
		${inc}
		CMSWindowsClipboard.cpp
		CMSWindowsClipboardFacade.cpp
		CMSWindowsClipboardAnyTextConverter.cpp
		CMSWindowsClipboardBitmapConverter.cpp
		CMSWindowsClipboardHTMLConverter.cpp
		CMSWindowsClipboardTextConverter.cpp
		CMSWindowsClipboardUTF16Converter.cpp
		CMSWindowsDesks.cpp
		CMSWindowsEventQueueBuffer.cpp
		CMSWindowsKeyState.cpp
		CMSWindowsScreen.cpp
		CMSWindowsScreenSaver.cpp
		CMSWindowsUtil.cpp
		CMSWindowsRelauncher.cpp
		CMSWindowsHookLibraryLoader.cpp
	)
	
	set(inc_hook
		CSynergyHook.h
	)
	
	set(src_hook
		CSynergyHook.cpp
	)

	set(inc_xinhook
		XInputHook.h
		HookDLL.h
	)
	
	set(src_xinhook
		XInputHook.cpp
		HookDLL.cpp
	)

	set(inc_xinproxy13
		XInput13.h
		XInputProxy13.h
	)

	set(src_xinproxy13
		XInputProxy13.cpp
	)

elseif (APPLE)

	set(src
		COSXClipboard.cpp
		COSXClipboardAnyTextConverter.cpp
		COSXClipboardTextConverter.cpp
		COSXClipboardUTF16Converter.cpp
		COSXEventQueueBuffer.cpp
		COSXKeyState.cpp
		COSXScreen.cpp
		COSXScreenSaver.cpp
		COSXScreenSaverUtil.m
	)
	
elseif (UNIX)

	set(src
		CXWindowsClipboard.cpp
		CXWindowsClipboardAnyBitmapConverter.cpp
		CXWindowsClipboardBMPConverter.cpp
		CXWindowsClipboardHTMLConverter.cpp
		CXWindowsClipboardTextConverter.cpp
		CXWindowsClipboardUCS2Converter.cpp
		CXWindowsClipboardUTF8Converter.cpp
		CXWindowsEventQueueBuffer.cpp
		CXWindowsKeyState.cpp
		CXWindowsScreen.cpp
		CXWindowsScreenSaver.cpp
		CXWindowsUtil.cpp
	)
	
endif()

set(inc
	../arch
	../base
	../common
	../mt
	../synergy
)

if (UNIX)
	list(APPEND inc
		../../..
	)
endif()

include_directories(${inc})
add_library(platform STATIC ${src})

if (WIN32)
	add_library(synrgyhk SHARED ${inc_hook} ${src_hook})

	# copy the dlls (and supporting files) from the lib dir to 
	# the bin dir, so that synergyc and synergys can easily find them.
	# we should leave the other libraries compiling to the lib dir,
	# so that the bin dir remains tidy. the path is relative to the
	# build dir (in this case, that's: build\src\lib\platform).
	add_custom_command(
		TARGET synrgyhk 
		POST_BUILD
		COMMAND xcopy /Y /Q
			..\\..\\..\\..\\lib\\${CMAKE_CFG_INTDIR}\\synrgyhk.*
			..\\..\\..\\..\\bin\\${CMAKE_CFG_INTDIR}\\
	)

	if (GAME_DEVICE_SUPPORT)
		include_directories($ENV{DXSDK_DIR}/Include)
		add_library(synxinhk SHARED ${inc_xinhook} ${src_xinhook})

		add_custom_command(
			TARGET synxinhk
			POST_BUILD
			COMMAND xcopy /Y /Q
				..\\..\\..\\..\\lib\\${CMAKE_CFG_INTDIR}\\synxinhk.*
				..\\..\\..\\..\\bin\\${CMAKE_CFG_INTDIR}\\
			)

		# synergy xinput1_3.dll proxy
		include_directories($ENV{DXSDK_DIR}/Include)
		add_library(sxinpx13 SHARED ${inc_xinproxy13} ${src_xinproxy13})
		target_link_libraries(sxinpx13 synxinhk)
		add_custom_command(
			TARGET sxinpx13
			POST_BUILD
			COMMAND xcopy /Y /Q
				..\\..\\..\\..\\lib\\${CMAKE_CFG_INTDIR}\\sxinpx13.*
				..\\..\\..\\..\\bin\\${CMAKE_CFG_INTDIR}\\
			)
	endif()
endif()

if (UNIX)
	target_link_libraries(platform synergy ${libs})
endif()
